package com.mofofa.maozy.network

import com.mofofa.maozy.data.*
import com.google.gson.JsonObject
import okhttp3.MultipartBody
import retrofit2.Call
import retrofit2.http.*

interface ApiUserService {
    /**
     * 系统-获取启动配置
     */
    @POST
    fun fetchMaozyGlobalMaozyConfig(
        @Url targetUrl: String,
        @Body reqZone: ReqZone
    ): Call<RevGlobalConfig>

    /**
     * 系统-获取产品配置
     */
    @POST
    fun fetchMaozyAppMaozyConfig(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevAppConfig>

    /**
     * 系统-获取版本号
     */
    @POST
    fun fetchMaozyAppMaozyVersion(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevAppVersion>

    /**
     * 登录-发送验证码
     */
    @POST
    fun fetchMaozyOtp(
        @Url targetUrl: String,
        @Body reqDoLogin: ReqDoLogin
    ): Call<RevDoLogin>

    /**
     * 登录-验证码登录
     */
    @POST
    fun doMaozyLogin(
        @Url targetUrl: String,
        @Body reqDoLogin: ReqDoLogin
    ): Call<RevDoLogin>

    /**
     * 用户-获取用户流程状态
     */
    @POST
    fun fetchMaozyUserMaozyState(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevUserState>

    /**
     * 用户-获取首页额度
     */
    @POST
    fun fetchMaozyHomeMaozyCredit(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevHomeCredit>

    /**
     * 用户-保存问题反馈
     */
    @POST
    fun saveMaozyFeedback(
        @Url targetUrl: String,
        @Body reqSaveFeedback: ReqSaveFeedback
    ): Call<RevBase>

    /**
     * 用户-保存认证信息
     */
    @POST
    fun saveMaozyInfo(
        @Url targetUrl: String,
        @Body jsonObject: JsonObject
    ): Call<RevBase>

    /**
     * 用户-保存认证信息-ocr
     */
    @POST
    fun saveMaozyInfoMaozyOcr(
        @Url targetUrl: String,
        @Body reqSaveOcrResultVnd: ReqSaveOcrResultVnd
    ): Call<RevBase>

    /**
     * 用户-开始活体识别-liveness
     */
    @POST
    fun startMaozyLiveness(
        @Url targetUrl: String,
        @Body reqSaveLivenessVnd: ReqSaveLivenessVnd
    ): Call<RevBase>

    /**
     * 用户-保存认证信息-liveness
     */
    @POST
    fun saveMaozyInfoMaozyLiveness(
        @Url targetUrl: String,
        @Body reqSaveLivenessVnd: ReqSaveLivenessVnd
    ): Call<RevBase>

    /**
     * 用户-获取银行列表
     */
    @POST
    fun fetchMaozyBankMaozyCodeMaozyList(
        @Url targetUrl: String,
        @Body reqGetBankList: ReqGetBankList
    ): Call<RevBankList>

    /**
     * 订单-获取放款中详情信息
     */
    @POST
    fun fetchMaozyLoaningMaozyDetail(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevLoanDetail>

    /**
     * 订单-确认申请
     */
    @POST
    fun createMaozyLoan(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevBase>

    /**
     * 用户-查询是否需要启动评价流程
     */
    @POST
    fun checkMaozyAppMaozyReview(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<ZzrevCheckAppReview>

    /**
     * 还款-获取还款详情信息
     */
    @POST
    fun fetchMaozyRepayMaozyDetail(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevRepayDetail>

    /**
     * 还款-获取还款链接-加纳
     */
    @POST
    fun fetchMaozyRepayMaozyUrlMaozyGHA(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevRepayUrl>

    /**
     * 还款-获取还款链接-乌干达
     */
    @POST
    fun fetchMaozyRepayMaozyUrlMaozyUGX(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevRepayUrl>

    /**
     * 还款-获取还款链接-肯尼亚
     */
    @POST
    fun fetchMaozyRepayMaozyUrlMaozyKSH(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevRepayUrl>

    /**
     * 还款-获取还款链接-科特
     */
    @POST
    fun fetchMaozyRepayMaozyUrlMaozyFCFA(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevRepayUrl>

    /**
     * 还款-获取还款链接-越南
     */
    @POST
    fun fetchMaozyRepayMaozyUrlMaozyVND(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevRepayUrl>

    /**
     * 还款-获取虚拟账号信息-尼日
     */
    @POST
    fun fetchMaozyVirtualMaozyAccount(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevBase>

    /**
     * 还款-获取paystack sdk 初始化信息-尼日
     */
    @POST
    fun initMaozyPaystackMaozySdk(
        @Url targetUrl: String,
        @Body reqPaystackOrderInitNgn: ReqPaystackOrderInitNgn
    ): Call<RevPaystackOrderInitNgn>

    /**
     * 还款-获取paystack 卡列表
     */
    @POST
    fun fetchMaozyPaystackMaozyCardMaozyList(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevPaystackCardListNgn>

    /**
     * 绑卡-获取wallet mobile 列表 -科特
     */
    @POST
    fun getMaozyWalletMaozyListMaozyFCFA(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevWalletListFcfa>

    /**
     * 绑卡-保存新增wallet mobile -科特
     */
    @POST
    fun saveMaozyWalletMaozyFCFA(
        @Url targetUrl: String,
        @Body reqSaveWalletFcFa: ReqSaveWalletFcFa
    ): Call<RevBase>

    /**
     * 绑卡-删除wallet mobile -科特
     */
    @POST
    fun deleteMaozyWalletMaozyFCFA(
        @Url targetUrl: String,
        @Body reqDeleteWalletFcfa: ReqDeleteWalletFcfa
    ): Call<RevBase>

    /**
     * 绑卡-保存wallet 认证状态 -科特
     */
    @POST
    fun saveMaozyBvnMaozyFCFA(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevBase>
    /**
     * 绑卡-获取wallet mobile 列表 -科唛隆
     */
    @POST
    fun getMaozyWalletMaozyListMaozyXaf(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevWalletListFcfa>
    /**
     * 绑卡-保存新增wallet mobile -科唛隆
     */
    @POST
    fun saveMaozyWalletMaozyXaf(
        @Url targetUrl: String,
        @Body reqSaveWalletFcFa: ReqSaveWalletFcFa
    ): Call<RevBase>
    /**
     * 绑卡-删除wallet mobile -科唛隆
     */
    @POST
    fun deleteMaozyWalletMaozyXaf(
        @Url targetUrl: String,
        @Body reqDeleteWalletFcfa: ReqDeleteWalletFcfa
    ): Call<RevBase>
    /**
     * 绑卡-保存wallet 认证状态 -科特
     */
    @POST
    fun saveMaozyBvnMaozyXaf(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevBase>


    /**
     * 工具-上传图片
     */
    @Multipart
    @POST
    fun uploadMaozyImage(
        @Url targetUrl: String,
        @QueryMap map: Map<String, String>,
        @Part file: MultipartBody.Part
    ): Call<RevImageUpload>

    /**
     * 工具-图片ocr
     */
    @POST
    fun startMaozyOcr(
        @Url targetUrl: String,
        @Body reqDoOcrVnd: ReqDoOcrVnd
    ): Call<RevOcrResultVnd>

    /**
     * 工具-运营商认证
     */
    @POST
    fun startMaozySim(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevSimLinkVnd>

    /**
     * 工具-保存运营商认证
     */
    @POST
    fun saveMaozyInfoMaozySim(
        @Url targetUrl: String,
        @Body reqBase: ReqBase
    ): Call<RevBase>

}